<!DOCTYPE html>
<html lang="en-us">
  <head>
    <meta charset="UTF-8">
    <title>Silkier  Quartz by maikebing</title>
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <link rel="stylesheet" type="text/css" href="stylesheets/normalize.css" media="screen">
    <link href='https://fonts.googleapis.com/css?family=Open+Sans:400,700' rel='stylesheet' type='text/css'>
    <link rel="stylesheet" type="text/css" href="stylesheets/stylesheet.css" media="screen">
    <link rel="stylesheet" type="text/css" href="stylesheets/github-light.css" media="screen">
  </head>
  <body>
    <section class="page-header">
      <h1 class="project-name">Silkier  Quartz</h1>
      <h2 class="project-tagline"> SilkierQuartz can host jobs  using HostService and   Provide a  web   management tools for Quartz !</h2>
      <a href="https://github.com/maikebing/SilkierQuartz" class="btn">View on GitHub</a>
      <a href="https://github.com/maikebing/SilkierQuartz/zipball/master" class="btn">Download .zip</a>
      <a href="https://github.com/maikebing/SilkierQuartz/tarball/master" class="btn">Download .tar.gz</a>
    </section>

    <section class="main-content">
      <p><a href="https://www.nuget.org/packages/SilkierQuartz"><img src="https://img.shields.io/nuget/v/SilkierQuartz.svg" alt="NuGet"></a>
<a href="LICENSE"><img src="https://img.shields.io/badge/License-MIT-green.svg" alt="License: MIT"></a>
<a href="https://ci.appveyor.com/project/MaiKeBing/silkierquartz"><img src="https://ci.appveyor.com/api/projects/status/0ojmooqvycks11kw?svg=true" alt="Build status"></a>
<img src="https://github.com/maikebing/SilkierQuartz/workflows/.NET%20Core/badge.svg?branch=master" alt=".NET Core"></p>
<p>SilkierQuartz is a new after merging  <a href="https://github.com/jlucansky/Quartzmin">Quartzmin</a> and  <a href="https://github.com/mukmyash/QuartzHostedService">QuartzHostedService</a>!</p>
<blockquote>
<p><a href="https://www.quartz-scheduler.net">Quartz.NET</a> is a full-featured, open source job scheduling system that can be used from smallest apps to large scale enterprise systems.</p>
</blockquote>
<blockquote>
<p><a href="https://github.com/jlucansky/Quartzmin">Quartzmin</a> Quartzmin is powerful, easy to use web management tool for Quartz.NET</p>
</blockquote>
<blockquote>
<p><a href="https://github.com/mukmyash/QuartzHostedService">QuartzHostedService</a> QuartzHostedService is easy to host Quartz as service in .Net Core !</p>
</blockquote>
<p>So</p>
<p>SilkierQuartz can be used within your existing application with minimum effort as a Quartz.NET plugin when it automatically creates embedded web server. Or it can be plugged into your existing OWIN-based web application as a middleware.</p>
<p><img src="https://raw.githubusercontent.com/jlucansky/public-assets/master/Quartzmin/demo.gif" alt="Demo"></p>
<p>The goal of this project is to provide convenient tool to utilize most of the functionality that Quartz.NET enables. The biggest challenge was to create a simple yet effective editor of job data map which is heart of Quartz.NET. Every job data map item is strongly typed and SilkierQuartz can be easily extended with a custom editor for your specific type beside standard supported types such as String, Integer, DateTime and so on.</p>
<p>SilkierQuartz was created with <strong>Semantic UI</strong> and <strong>Handlebars.Net</strong> as the template engine.</p>
<h2>
<a id="silkierquartzs-features" class="anchor" href="#silkierquartzs-features" aria-hidden="true"><span aria-hidden="true" class="octicon octicon-link"></span></a>SilkierQuartz's Features</h2>
<ul>
<li>automatically discover IJob subclasses with SilkierQuartzAttribute</li>
<li>With QuartzHostedService and more extensions</li>
</ul>
<h2>
<a id="quartzmins-features" class="anchor" href="#quartzmins-features" aria-hidden="true"><span aria-hidden="true" class="octicon octicon-link"></span></a>Quartzmin's Features</h2>
<ul>
<li>Add, modify jobs and triggers</li>
<li>Add, modify calendars (Annual, Cron, Daily, Holiday, Monthly, Weekly)</li>
<li>Change trigger type to Cron, Simple, Calendar Interval or Daily Time Interval</li>
<li>Set typed job data map values (bool, DateTime, int, float, long, double, decimal, string, byte[])</li>
<li>Create custom type editor for complex type in job data map</li>
<li>Manage scheduler state (standby, shutdown)</li>
<li>Pause and resume job and trigger groups</li>
<li>Pause and resume triggers individually</li>
<li>Pause and resume all triggers for specific job</li>
<li>Trigger specific job immediately</li>
<li>Watch currently executing jobs</li>
<li>Interrupt executing job</li>
<li>See next scheduled dates for Cron</li>
<li>See recent job history, state and error messages</li>
</ul>
<h2>
<a id="install" class="anchor" href="#install" aria-hidden="true"><span aria-hidden="true" class="octicon octicon-link"></span></a>Install</h2>
<p>SilkierQuartz is available on <a href="https://www.nuget.org/packages/SilkierQuartz">nuget.org</a></p>
<p>To install SilkierQuartz, run the following command in the Package Manager Console</p>
<div class="highlight highlight-source-powershell"><pre>PM<span class="pl-k">&gt;</span> <span class="pl-c1">Install-Package</span> SilkierQuartz</pre></div>
<h2>
<a id="minimum-requirements" class="anchor" href="#minimum-requirements" aria-hidden="true"><span aria-hidden="true" class="octicon octicon-link"></span></a>Minimum requirements</h2>
<ul>
<li>.NET Core 3.1</li>
</ul>
<h3>
<a id="owin-middleware" class="anchor" href="#owin-middleware" aria-hidden="true"><span aria-hidden="true" class="octicon octicon-link"></span></a>OWIN middleware</h3>
<p>Add to your <code>Startup.cs</code> file:</p>
<div class="highlight highlight-source-cs"><pre><span class="pl-k">public</span> <span class="pl-k">void</span> <span class="pl-en">Configuration</span>(<span class="pl-en">IAppBuilder</span> <span class="pl-smi">app</span>)
{
    <span class="pl-smi">app</span>.<span class="pl-en">UseSilkierQuartz</span>(<span class="pl-k">new</span> <span class="pl-en">SilkierQuartzOptions</span>()
    {
        <span class="pl-smi">Scheduler</span> <span class="pl-k">=</span> <span class="pl-smi">StdSchedulerFactory</span>.<span class="pl-en">GetDefaultScheduler</span>().<span class="pl-smi">Result</span>
    });
}</pre></div>
<h3>
<a id="aspnet-core-middleware" class="anchor" href="#aspnet-core-middleware" aria-hidden="true"><span aria-hidden="true" class="octicon octicon-link"></span></a>ASP.NET Core middleware</h3>
<p>Add to your <code>Program.cs</code> file:</p>
<div class="highlight highlight-source-cs"><pre>   <span class="pl-k">public</span> <span class="pl-k">class</span> <span class="pl-en">Program</span>
    {
        <span class="pl-k">public</span> <span class="pl-k">static</span> <span class="pl-k">void</span> <span class="pl-en">Main</span>(<span class="pl-k">string</span>[] <span class="pl-smi">args</span>)
        {
            <span class="pl-en">CreateHostBuilder</span>(<span class="pl-smi">args</span>).<span class="pl-en">Build</span>().<span class="pl-en">Run</span>();
        }

        <span class="pl-k">public</span> <span class="pl-k">static</span> <span class="pl-en">IHostBuilder</span> <span class="pl-en">CreateHostBuilder</span>(<span class="pl-k">string</span>[] <span class="pl-smi">args</span>) <span class="pl-k">=&gt;</span>
            <span class="pl-smi">Host</span>.<span class="pl-en">CreateDefaultBuilder</span>(<span class="pl-smi">args</span>)
                .<span class="pl-en">ConfigureWebHostDefaults</span>(<span class="pl-smi">webBuilder</span> <span class="pl-k">=&gt;</span>
                {
                    <span class="pl-smi">webBuilder</span>.<span class="pl-en">UseStartup</span>&lt;<span class="pl-en">Startup</span>&gt;();
                })
             .<span class="pl-en">ConfigureSilkierQuartzHost</span>();
     }
</pre></div>
<p>Add to your <code>Startup.cs</code> file:</p>
<div class="highlight highlight-source-cs"><pre><span class="pl-k">public</span> <span class="pl-k">void</span> <span class="pl-en">ConfigureServices</span>(<span class="pl-en">IServiceCollection</span> <span class="pl-smi">services</span>)
{
    <span class="pl-smi">services</span>.<span class="pl-en">AddSilkierQuartz</span>();
}

<span class="pl-k">public</span> <span class="pl-k">void</span> <span class="pl-en">Configure</span>(<span class="pl-en">IApplicationBuilder</span> <span class="pl-smi">app</span>)
{
    <span class="pl-smi">app</span>.<span class="pl-en">UseSilkierQuartz</span>(<span class="pl-k">new</span> <span class="pl-en">SilkierQuartzOptions</span>()
                {
                    <span class="pl-smi">Scheduler</span> <span class="pl-k">=</span> <span class="pl-smi">scheduler</span>,
                    <span class="pl-smi">VirtualPathRoot</span> <span class="pl-k">=</span> <span class="pl-s"><span class="pl-pds">"</span>/SilkierQuartz<span class="pl-pds">"</span></span>,
                    <span class="pl-smi">UseLocalTime</span> <span class="pl-k">=</span> <span class="pl-c1">true</span>,
                    <span class="pl-smi">DefaultDateFormat</span> <span class="pl-k">=</span> <span class="pl-s"><span class="pl-pds">"</span>yyyy-MM-dd<span class="pl-pds">"</span></span>,
                    <span class="pl-smi">DefaultTimeFormat</span> <span class="pl-k">=</span> <span class="pl-s"><span class="pl-pds">"</span>HH:mm:ss<span class="pl-pds">"</span></span>
                });
}</pre></div>
<h2>
<a id="notes" class="anchor" href="#notes" aria-hidden="true"><span aria-hidden="true" class="octicon octicon-link"></span></a>Notes</h2>
<p>In clustered environment, it make more sense to host SilkierQuartz on single dedicated Quartz.NET node in standby mode and implement own <code>IExecutionHistoryStore</code> depending on database or ORM framework you typically incorporate. Every clustered Quarz.NET node should be configured with <code>ExecutionHistoryPlugin</code> and only dedicated node for management may have <code>SilkierQuartzPlugin</code>.</p>
<h2>
<a id="license" class="anchor" href="#license" aria-hidden="true"><span aria-hidden="true" class="octicon octicon-link"></span></a>License</h2>
<p>This project is made available under the MIT license. See <a href="LICENSE">LICENSE</a> for details.</p>

      <footer class="site-footer">
        <span class="site-footer-owner"><a href="https://github.com/maikebing/SilkierQuartz">Silkier  Quartz</a> is maintained by <a href="https://github.com/maikebing">maikebing</a>.</span>

        <span class="site-footer-credits">This page was generated by <a href="https://pages.github.com">GitHub Pages</a> using the <a href="https://github.com/jasonlong/cayman-theme">Cayman theme</a> by <a href="https://twitter.com/jasonlong">Jason Long</a>.</span>
      </footer>

    </section>

  
  </body>
</html>
